jQuery formValidator表单验证插件

总体预览：

jQuery formValidator表单验证插件是什么?

jQuery formValidator表单验证插件，它是基于jQuery类库，实现了js脚本于页面html代码的分离。你可以划分多个校验组，每个组的校验都是互不影响。对一个表单对象，你只需要写一行代码就可以轻松实现无数种（理论上）脚本控制。插件支持6种大的校验方式，分别是：inputValidator（针对input、textarea、select控件的字符长度、值范围、选择个数的控制）、compareValidator（提供2个对象的比较，目前可以比较字符串和数值型）、ajaxValidator（通过ajax到服务器上做数据校验）、regexValidator（提供可扩展的正则表达式库） 、functionValidator （可使用外部函数来做校验，可以当做过程处理）、passwordValidator（密码强度校验）。插件支持四种提示模式：固定提示层(FixTip)、自动构建提示层(AutoTip)、单个提示层跟随(SingleTip)、弹出提示内容(AlertTip)。插件支持换肤：默认情况下提供4套皮肤，其中包括58网、网易邮箱注册两套皮肤。

本插件于其他校验控件最大的区别有6点：

1、校验功能可以扩展。
对中文、英文、数字、整数、实数、Email地址格式、基于HTTP协议的网址格式、电话号码格式、手机号码格式、货币格式、邮政编码、身份证号码、QQ号码、日期等等这些控制，别的表单校验控件是代码里写死的，而formValidator是通过外部js文件来扩展的，你可以通过写正则表达式和函数来无限的扩展这些功能。

2、实现了校验代码于html代码的完全分离。
你的所有信息都无需配置在校验表单元素上，你只要在js上配置你的信息。使美工（界面）和javascript工程师的工作不交织在一起

3、你只需写一行代码就能完成一个表单元素的所有校验。你只需要写一行代码就能完成一下所有的控制

  • 支持所有类型客户端控件的校验
  • 支持jQuery所有的选择器语法，只要控件有唯一ID和type属性
  • 支持函数和正则表达式的扩展。提供扩展库formValidatorReg.js，你可以自由的添加、修改里面的内容。
  • 支持2种校验模式。第一种：文字提示(showword模式)；第二种：弹出窗口提示(showalert模式)
  • 支持多个校验组。如果一个页面有多个提交按钮，分别做不同得提交，提交前要做不同的校验，所以你得用到校验组的功能。
  • 支持4种状态的信息提示功能，可以灵活的控制4种状态是否显示。第一种：刚打开网页的时候进行提示；第二种：获得焦点的时候进行提示；第三种：失去焦点时，校验成功时候的提示；第四种：失去焦点时，校验失败的错误提示。
  • 支持自动构建提示层。可以进行精确的定位。
  • 支持自定义错误提示信息。
  • 支持控件的字符长度、值范围、选择个数的控制。值范围支持数值型和字符型；选择的个数支持radio/checkbox/select三种控件
  • 支持2个控件值的比较。目前可以比较字符串和数值型。
  • 支持服务器端校验。
  • 支持输入格式的校验。

4、支持多大4种提示模式。

固定提示层(FixTip)、自动构建提示层(AutoTip)、单个提示层跟随(SingleTip)、弹出提示内容(AlertTip)

5、支持换肤。

  • 默认提供三套皮肤（ArrowSolidBox、Default、SolidBox、126）

  • 可以下载无数网友编辑的皮肤。

6、提供代码生成器。

代码生成器演示地址：http://www.yhuan.com/thread-43-1-1.html

默认皮肤名“Default”效果图

皮肤名为“ArrowSolidBox”效果图

皮肤名为“SolidBox”效果图


jQuery formValidator表单验证插件

jQuery formValidator使用插件介绍

  1. jQuery formValidator是什么？
  2. jQuery formValidator能做什么，不能做什么？
  3. 什么情况下，我应该使用jQuery formValidator？
  4. 快速开始
  5. 使用jQuery formValidator必须加载的文件

1. jQuery formValidator表单验证插件是什么？ [top]

jQuery formValidator表单验证插件是客户端表单验证插件。
在做B/S开发的时候，我们经常涉及到很多表单验证，例如新用户注册，填写个人资料，录入一些常规数据等等。在这之前，页面开发者（JavaScript开发者）需要编写大量的JavaScript来进行表单元素的校验，而这些校验在平时开发中不停的重复书写。
常见的校验如不能为空，必须满足长度要求，必须为数字，必须为Email等等。一般要判断的表单元素比较多，开发过程就显得枯燥无味——重复的代码不断重复，而且可能还要兼容多种浏览器，更多的考虑因素使人头疼不已。由于每个要校验的页面虽然逻辑基本相同，但是在大多数情况下，出于种种原因，开发者宁愿再编写一套JS文件，为了便于管理。
jQuery formValidator表单插件致力于改善这一过程。你只关心业务逻辑，而无需关系实现过程,只需简单的配置，无需写代码就能实现表单的检验。它包括常规检验功能和可扩展校验功能。针对每个表单元素你只需要写一行配置信息就能完成校验。而这些配置信息无需写入表单元素，实现了js代码和html代码的分离。这样做的好处，使B/S开发过程中，分工更加明确，页面设计着只需关心他的页面（设计的时候不必担心把脚本弄坏了），javascript开发者只需关心脚本的开发。
而插件本身包含的校验方式可以有无数种，只要你扩展正则表达式和函数。本插件于同类校验插件最大的区别：校验功能可以扩展；实现了校验代码于html代码的完全分离；你只需写一行配置信息就能完成一个表单元素的所有校验。插件本身提供了很多回调函数，使调用者能最大限度的发挥自己的想象能力来完成自己的业务需求。 在同一个页面你可以拥有很多个校验组，你只需在提交的按钮那里调用
return jQuery.formValidator.pageIsValid('校验组号') 来完成多个组的校验，互不干扰。
插件具备跨浏览器的能力。目前在ie和ff两种浏览器下调试通过，你不用再考虑在多浏览器下如何兼容，jQuery formValidator帮你做到了这些。

2. jQuery formValidator能做什么，不能做什么？ [top]

jQuery formValidator表单校验插件支持的验证功能（还有很多功能没有罗列）罗列如下：

  • 支持所有类型客户端控件的校验
  • 支持jQuery所有的选择器语法，只要控件有唯一ID和type属性。
  • 支持函数和正则表达式的扩展。提供扩展库formValidatorReg.js，你可以自由的添加、修改里面的内容。
  • 支持2种校验模式。第一种：文字提示(showword模式)；第二种：弹出窗口提示(showalert模式)
  • 支持多个校验组。如果一个页面有多个提交按钮，分别做不同得提交，提交前要做不同的校验，所以你得用到校验组的功能。
  • 支持4种提示模式：固定提示层(FixTip)、自动构建提示层(AutoTip)、单个提示层跟随(SingleTip)、弹出提示内容(AlertTip)。
  • 支持自定义错误提示信息。
  • 支持控件的字符长度、值范围、选择个数的控制。值范围支持数值型和字符型；选择的个数支持radio/checkbox/select三种控件
  • 支持2个控件值的比较。目前可以比较字符串和数值型。
  • 支持单个控件、整单ajax提交
  • 支持输入格式的校验。
  • 支持换肤
  • 支持密码强度校验

jQuery formValidator不能做的：

  • 目前对控件ID是动态产生的情况支持的不是很好。例如asp.net里的gridview控件，因为它的每行数据都是动态产生的，捕捉不到控件的ID。不过你硬要写，也是能实现的。
  • 其他没有提到的，很希望你能告诉我们。

3. 什么情况下，我应该使用jQuery formValidator？ [top]

只要控件ID是一定的，即：控件ID是你自己指定的，这种情况你都可以调用。当然动态产生ID的，你也可以调用。jQuery formValidator可以帮助你减轻客户端校验编程的压力，让你有更多的精力投入对业务的关注中。

无论你是大型系统还是小型系统都适合调用本插件，本插件的压缩版本只有6K（可能本网页的一张图片就有几十K），个人认为可以忽略网页的加载时间。

4. 快速开始 [top]

你可以有两种方法快速开始（看到效果）

  • 直接查看Demo页面 （goto>>）
  • 下载最新的版本，直接在本地查看。（goto>>）

无论是那种方法，演示的例子中都有详细的步骤，以及对应的代码。

5. 使用插件必须加载的文件 [top]

//加载jQuery类库
<script src="jquery-1.4.4.min.js" type="text/javascript"></script>
//加载插件
<script src="formValidator-4.1.1.min.js" type="text/javascript"></script>
//加载扩展库(如果想用里面的函数、正则表达式，必须加载该文件)
<script src="formValidatorRegex.js" type="text/javascript"></script>


jQuery formValidator 表单校验插件 4.1.1 中文参考手册

jQuery formValidator表单校验插件函数列表

函数名 | 概述
inputValidator | 针对input、textarea、select控件的字符长度、值范围、选择个数的控制
compareValidator | 提供2个对象的比较，目前可以比较字符串和数值型
regexValidator | 利用正则表达式多输入格式进行校验
functionValidator | 利用外部函数来做校验
passwordValidator | 对密码强度进行校验
ajaxValidator | 通过ajax到服务器上做数据校验
formValidator | 对单个控件进行配置
defaultPassed | 默认校验通过，显示onCorrect状态
unFormValidator | 解除控件的验证功能
$.formValidator.initConfig | 对整个校验组进行全局配置
$.formValidator.pageIsValid | 对整组校验组进行校验
$.formValidator.getLength | 返回控件的长度/选择个数/索引号
$.formValidator.reloadAutoTip | 重新定位提示层的位置
$.formValidator.retSetTipState | 来把该组的提示内容恢复到页面刚打开的状态
$.formValidator.serialize | 把指定的内容序列化，中文不会乱码


jQuery formValidator 表单校验插件中文参考手册

返回值:Void$.formValidator.initConfig

概述

对整个校验组进行全局配置

注意事项
      1、每个校验组，这个函数只需要调用一次

选项

validatorGroup String

(默认: "1") 属性名:校验组组号。 你要针对哪个组进行配置。
formvalidator函数里的validatorGroup值如果跟这里的值一样，就认为是同一组的控件。

formID String

属性名:表单FORM的ID。 插件自动在表单的submit事件里注册函数pageIsValid，伪代码如下：
$("#"+formid).submit(function(){return $.formValidator.pageIsValid("1");})};

mode StringVer4.1.1新增

(默认: FixTip) 属性名:显示模式。 四种模式：
1、固定提示层(FixTip)
2、自动构建提示层(AutoTip)
3、单个提示层跟随(SingleTip)
4、弹出提示内容(AlertTip)4种模式

errorFocus Boolean

(默认: true) 整个校验组校验失败的时候，第一个出错的控件是否获得焦点

forceValid Boolean

(默认: true) 属性名:强制验证。 同组的控件都采用：一直输入正确为止才允许离开焦点

wideWord Boolean

(默认: true) 属性名:宽字节。 是否把一个全角字符当做2个长度

onSuccess Function

该组校验通过后的回调函数,返回false，阻止表单的提交

ajaxForm JsonVer4.1.0新增

把整个表单的的数据通过ajax提交给服务器。参数有以下几个以及其默认值，于ajaxValidator函数里的参数意思一致
type : "GET",
url : "",
dataType : "html",
timeout : 100000,
data : null,
async : true,
cache : false,
buttons : null,
beforeSend : function(){return true;},
success : function(){return true;},
complete : $.noop,
processData : true,
error : $.noop

submitOnce Boolean

(默认: false) 校验通过后，是否灰掉所有的提交按钮

AjaxPrompt StringVer4.0.1新增

提交之前，如果存在ajax校验，且有未返回的，则在触发整组校验的时候会弹出此提示内容。默认值：“当前有数据正在进行服务器端校验，请稍候”，如果为空则不提示

onError Function

该组校验失败后的回调函数， 有三个参数
参数1： 一个校验没有通过的错误信息
参数2： 一个校验没有通过的元素对象
参数3： 所有的错误信息数组，你可以通过$.map来遍历

弹出第一个出错控件的错误信息
      $.formValidator.initConfig({theme:"Default",submitOnce:true,formID:"form1",
          onError:function(msg,obj,errorlist){
              alert(msg);
          }
      });

debug Boolean

(默认: false) 属性名:调试模式。 如果你设为调试模式，在校验成功后会有一个提示窗口：现在正处于调试模式(debug:true)，不能提交

示例

描述:

把错误信息集中在一个地方显示出来

jQuery 代码:
$.formValidator.initConfig({formID:"form1",theme:"ArrowSolidBox",
          onError:function(msg,obj,errorlist){
              $("#errorlist").empty();
              $.map(errorlist,function(msg){
                  $("#errorlist").append("<li>" + msg + "</li>")
              });
          }
      });

描述:

把整个表单通过ajax提交给服务器

jQuery 代码:
必须配置参数ajaxForm
      $.formValidator.initConfig({theme:"Default",submitOnce:true,formID:"form1",ajaxForm:{
              dataType : "html",
              buttons:$("#button"),
              url: "http://www.51gh.net/chkuser.aspx?act=ok"
          },
          onError:function(msg,obj,errorlist){
              alert(msg);
          },
          submitAfterAjaxPrompt : '有数据正在异步验证，请稍等...'
      });


返回值:jQueryformValidator

概述

对单个控件进行配置

注意事项
      1、每个校验控件，该函数只需要调用一次
      2、每个校验控件，该函数必须第一个位置调用

选项

validatorGroup String

属性名:校验组。 一个页面的控件可以分成多个组，分开校验

empty Boolean

(默认: false) 属性名:是否可以为空。 控件是否允许为空。
如果是input-text控件，表示内容是否可以为空。
如果是checkbox、radio、select控件表示是否可以不选择项。

onShowText StringVer4.1.1新增

(默认: "") 显示在输入框里的提示。
效果是这样的：
1、默认情况下显示该值。显示的字体颜色，要结合onShowTextColor里的颜色设置
2、焦点输入框清空
3、失去焦点，如果未空，又显示该默认值
4、提交的时候如果显示的是该默认值，则是当做空提交的

onShowTextColor JsonVer4.1.1新增

(默认: {mouseOnColor:"#999999",mouseOutColor:"#000000"}) 输入框里的提示的颜色。该属性有2个attribute:
mouseOnColor:表示鼠标移到输入控件时候的颜色。默认"#999999"(灰色)
mouseOutColor::表示鼠标移到输入控件时候的颜色。默认"#000000"(黑色)

注意：该参数要结合onShowText一起使用

autoModify Boolean

(默认: true) 属性名:自动修复错误。 离开焦点的时候，校验不通过，是否自动修复错误。
只支持一下几种控件:text(文本框)、file(文件选择器)、password(密码框)、textarea(多行编辑框)

onEmpty String

(默认: "输入内容为空") 属性名:空时候的提示。 当内容为空时候的提示。为空则不显示提示内容。
为空的概念，详见本函数empty属性的解释

onShow String

(默认: "请输入内容") 属性名:显示时候的提示。 页面刚打开时候的提示消息，为空则不显示。

onFocus String

(默认: "请输入内容") 属性名:获得焦点的提示。 控件获得焦点时候的提示消息，为空则不显示。

onCorrect String

(默认: "输入正确") 属性名:正确后的提示。 当你焦点离开控件的时候，如果输入正确将出现该提示。为空则不显示

tipID String

(默认: 表单ID+"Tip") 属性名:提示层ID。 默认才用表单ID+"Tip"，你也可以显式的指明ID值。如果不自动构建提示层，表示提示层的ID号

tipCss Json

(默认: {left:10,top:-4,height:20,width:280}) 自动构建的提示层的样式，主要用于定位自动构建的提示层。这个值是相对校验控件的，当你的校验控件top和left值发生改变的时候，需要调用一下函数$.formValidator.reloadAutoTip();

relativeID String

(默认: 当前校验控件ID) 属性名:相对控件的ID。 采用自动构建提示层的时候，提示层相对的目标控件ID,tipCss属性就是相对这个参数而言的

pwdTipID String

(默认: 控件ID+Tip) 属性名:9.3。 用于显示密码强度校验提示放置的容器ID，默认跟tipID参数默认值相同，即显示在同个DIV里。

fixTipID String

(默认: null) 表示固定提示消息要放置的容器ID值。默认不设置固定提示消息。改参数要结合onShowFixText和onShowTextColor两个参数一起使用

forceValid Boolean

(默认: true) 属性名:是否强制输入。 是否一直输入正确为止才允许离开焦点

ajax BooleanVer4.0.1新增

(默认: true) 属性名:提交服务器。 某个控件有ajaxValidator函数校验的时候，该参数决定哪些控件的值一起提交给服务器

输入用户名的控件通过ajaxValidator函数，把当前值传递给服务器，同时把邮箱地址一起传递过去
      $("#username").formValidator({aonShow:"请输入用户名"...}).ajaxValidator({url:"check.ashx"....});
      $("#email").formValidator({ajax:true,onShow:"请输入电子邮件地址"...})

defaultValue Object,String

属性名:默认值。 为input、select、textarea控件设置默认值。
值分两种类型:
数组:checkbox、radio、select-more
简单数据类型:text、file、password、select-one

triggerEvent String

(默认: blur) 属性名:触发校验的事件。 当前支持2种属性值:
blur:失去焦点的时候触发
change:当输入框里的值发生改变的时候触发

leftTrim Boolean

(默认: false) 属性名:去掉左边空格。 是否先去掉左边空格再校验

rightTrim Boolean

(默认: false) 属性名:去掉右边空格。 是否先去掉左边空格再校验

示例

描述:

针对几种常见控件设置默认值的方法

jQuery 代码:
input-text控件
      $("#Tel_country").formValidator({tipID:"teltip",onShow:"请输入国家区号",onFocus:"国家区号2位数字",onCorrect:"恭喜你,你输对了",defaultValue:"86"});

      radio控件:
      $(":radio[name='xb_one']").formValidator({tipID:"sexTip",onShow:"请选择你的性别",onFocus:"没有第三种性别了，你选一个吧",onCorrect:"输入正确",defaultValue:["1"]});

      checkbox控件:
      $(":checkbox[name='xqah_more']").formValidator({tipID:"test2Tip",onShow:"请选择你的兴趣爱好(至少选择2个,最多选择3个)",onFocus:"你至少选择2个,最多选择3个",onCorrect:"恭喜你,你选对了",defaultValue:["7","8"]};

      select控件(多选)
      $("#selectmore").formValidator({onShow:"按住CTRL可以多选",onFocus:"按住CTRL可以多选,至少选择2个",onCorrect:"谢谢你的合作",defaultValue:["0","1","2"]});

描述:

多个控件共享一个提示层

jQuery 代码:
例如demo1里，让用户输入：国家区号、地区区号、电话号码、分机号码4个信息，在4个控件的formValidator函数里配置tipID为同个提示层即可：
      $("#Tel_country").formValidator({tipID:"teltip",onShow:"请输入国家区号"...});
      $("#Tel_area").formValidator({tipID:"teltip",onShow:"请输入地区区号"...});
      $("#Tel_number").formValidator({tipID:"teltip",onShow:"请输入电话号码"...});
      $("#Tel_ext").formValidator({tipID:"teltip",onShow:"请输入分机号码"...});

描述:

设置固定显示消息。例子中的fixTip可以不设置，因为跟默认值相同

jQuery 代码:
$("#password1").formValidator({
          fixTip:"password1FixTip",
          onShowFixText:"6~16个字符，包括字母、数字、特殊符号，区分大小写",
          onShow:"请输入密码",onFocus:"至少1个长度",onCorrect:"密码合法"})
      .inputValidator({min:6,max:16,
          empty:{leftEmpty:false,rightEmpty:false,emptyError:"密码两边不能有空符号"},
          onError:"密码长度错误,请确认"});

描述:

设置文本框里的默认显示值，鼠标点进去又置为空，离开的时候又显示该默认值。

jQuery 代码:
$("#ms").formValidator({
          onShowText:"这家伙很懒，什么都没有留下。",
          onShow:"请输入你的描述",
          onFocus:"描述至少要输入10个汉字或20个字符",
          onCorrect:"恭喜你,你输对了"})
      .inputValidator({
          min:20,
          onError:"你输入的描述长度不正确,请确认"
      });


返回值:jQueryinputValidator

概述

针对input、textarea、select控件的字符长度、值范围、选择个数的控制

支持的控件类型
      text(文本框)、radio(单选框)、checkbox(复选框)、file(文件选择器)、password(密码框)、textarea(多行编辑框)、select(选择框)

选项

type Object

(默认: "size") 属性名:比较类型。 值有以下几个类型:
"size":表示字符长度/(checkbox/radio)选择的个数
"number":数值型比较
"string":字符型比较
"date":短日期类型
"datetime":长日期类型

min Object

(默认: 0) 属性名:最小长度/值。 默认数值型，表示对选择个数或长度。
对checkbox/radio而言表示选中控件的个数
对text(文本框)、password(密码框)、textarea(多行编辑框)而言表示输入值的字符长度或值的大小
对select-one而言inputValidator里的参数min和max表示选择的索引号范围
对select-multiple而言inputValidator里的参数min和max表示选择的个数

max Object

(默认: 99999) 属性名:最大长度/值。 同上min属性

onError String

(默认: 输入错误) 属性名:发生错误的提示。 发生错误时候的提示。为空则不显示。

onErrorMin String

属性名:比min属性小的提示。 当用户输入的值比min属性小的时候的错误提示

$("#nl").formValidator({
          autoModify:true,
          onShow:"请输入的年龄（1-99岁之间）",
          onFocus:"只能输入1-99之间的数字哦",
          onCorrect:"恭喜你,你输对了"
      }).
      inputValidator({
          min:1,
          max:99,
          type:"value",
          onErrorMin:"你输入的值必须大于等于1",
          onError:"年龄必须在1-99之间，请确认"
      });

onErrorMax String

属性名:比max属性大的提示。 当用户输入的值比max属性大的时候的错误提示

empty Json

属性名:是否允许两边为空。 默认两遍允许为空，默认值{leftEmpty:true,rightEmpty:true,emptyError:null}
leftEmpty:表示左边是否允许为空
rightEmpty:表示右边是否允许为空
emptyError：出现该错误的时候的提示，如果为null，则利用onError属性来提示错误。

示例

描述:

校验【用户名:input-text控件:username】的长度，必须在4-10之间

jQuery 代码:
$("#username").formValidator({
          onShow:"请输入用户名",
          onFocus:"用户名至少4个字符,最多10个字符",
          onCorrect:"该用户名可以注册"
      })
      .inputValidator({
          min:4,max:10,
          onError:"你输入的用户名非法,请确认"
      });

描述:

校验【年龄:input-text控件:nl】的值（数值），必须在1-99之间

jQuery 代码:
$("#nl").formValidator({
          autoModify:true,
          onShow:"请输入的年龄（1-99岁之间）",
          onFocus:"只能输入1-99之间的数字哦",
          onCorrect:"恭喜你,你输对了"
      }).
      inputValidator({
          min:1,
          max:99,
          type:"value",
          onErrorMin:"你输入的值必须大于等于1",
          onError:"年龄必须在1-99之间，请确认"
      });

描述:

校验【兴趣爱好:checkbox控件:xqah】至少选择2个，最多3个

jQuery 代码:
$(":checkbox[name='xqah']").formValidator({
          onShow:"请选择你的兴趣爱好(至少选择2个,最多选择3个)",
          onFocus:"你至少选择2个,最多选择3个",
          onCorrect:"恭喜你,你选对了",
          defaultValue:["7","8"]})
      .inputValidator({
          min:2,
          max:3,
          onError:"你选的个数不对(至少选择2个,最多选择3个)"
      });

描述:

校验【学历:select控件:xueli】必须选择

jQuery 代码:
$("#xueli").formValidator({
          onShow:"请选择你的学历",
          onFocus:"学历必须选择",
          onCorrect:"谢谢你的配合",
          defaultValue:"a"})
      .inputValidator({
          min:1,
          onError: "你是不是忘记选择学历了!"
      }).defaultPassed();


返回值:jQuerycompareValidator

概述

提供2个对象的比较，目前可以比较字符串和数值型

支持的控件类型
      text(文本框)、file(文件选择器)、password(密码框)、textarea(多行编辑框)

选项

desID String

属性名:要比较控件的ID。 要跟源目标进行比较的目标ID

operateor String

(默认: "=") 属性名:比较符号。 一共有如下几种类型:=、!=、>、>=、<、<=

dataType String

(默认: "string") 属性名:数据类型。 目前只支持4种:"string"、"number","datetime","date"

onError String

(默认: "输入错误") 属性名:发生错误的提示。 发生错误时候的提示。为空则不显示。

示例

描述:

重复密码(password2)必须于密码(password2)一致

jQuery 代码:
$("#password2").formValidator({
          onShow:"输再次输入密码",
          onFocus:"至少1个长度",
          onCorrect:"密码一致"})
      .inputValidator({min:1,onError:"重复密码不能为空,请确认"})
      .compareValidator({
          desID:"password1",
          operateor:"=",
          onError:"2次密码不一致,请确认"
      });


返回值:jQueryregexValidator

概述

利用正则表达式多输入格式进行校验

支持的控件类型
      text(文本框)、file(文件选择器)、password(密码框)、textarea(多行编辑框)

选项

regExp Object

属性名:正则表达式或表达式数组。 参数类型分两类：
1、字符型。表示正则表达式或则枚举类型
2、字符数组型。表示正则表达式或则枚举类型的数组形式
采用的是显式构造函数new RegExp("pattern"[,"flags"]); 由于Javascript 中'\' 被用作转义字符，所以在使用显示构造函数构造实例对象的时候，需要使用'\\' 代替'\'

param String

(默认: "i") 属性名:附加参数。 值有以下几种类型：
g：代表可以进行全局匹配。
i：代表不区分大小写匹配。
m：代表可以进行多行匹配。
可以任意组合,当然也可以不加参数

compareType StringVer4.0.1新增

(默认: "||") 属性名:比较类型。 值有以下几种类型：
||：或的关系
&&：并列的关系
当regExp为数组的时候，当前这个参数就表示，数组里的正则表达式的相互关系。

dataType String

(默认: "string") 属性名:数据类型。 值有以下几种类型：
string：自己写的表达式
enum：枚举名。
一般情况下，枚举名在formValidatorReg.js里设置，该脚本里已经默认带了几个常用正则表达式。你可以自己修改、添加formValidatorRegex.js里的枚举项目名和表达式。

onError String

(默认: "输入错误") 属性名:发生错误的提示。 发生错误时候的提示。为空者不显示。

示例

描述:

验证录入的手机号码的合法性

jQuery 代码:
$("#shouji").formValidator({...})
      .inputValidator({
          min:11,
          max:11,
          onError:"手机号码必须是11位的,请确认"})
      .regexValidator({
          regExp:"mobile",
          dataType:"enum",    //如果是"string",则regExp必须是正则表达式
          onError:"你输入的手机号码格式不正确"
      });

描述:

输入框即可以是手机号码，也可以是电话号码

jQuery 代码:
$("#sjdh").formValidator({empty:true,onFocus:"格式例如：0577-88888888或11位手机号码"...})
      .regexValidator({
          regExp:["tel","mobile"],
          dataType:"enum",
          onError:"你输入的手机或电话格式不正确"
      });


返回值:jQueryfunctionValidator

概述

利用外部函数来做校验

注意事项
      插件会为外部函数传递两个参数：
      1、当前值
      2、当前控件对象。
      你的外部函数起码要有一个参数，来接收当前的值。

      支持的控件类型
      text(文本框)、radio(单选框)、checkbox(复选框)、file(文件选择器)、password(密码框)、textarea(多行编辑框)、select(选择框)

选项

fun Function

属性名:外部函数名。 调用外部函数进行校验，提供2个参数：
参数1:元素的值,
参数2:元素对象。

返回值，有以下几种类型：
true: 校验成功
false: 校验失败
字符串:校验失败，返回值当作自定义错误信息，将显示在提示层上
无: 仅当一个处理过程。

onError String

(默认: "输入错误") 属性名:发生错误的提示。 发生错误时候的提示，为空则不显示。参数fun函数返回false的时候，显示该错误信息。

示例

描述:

调用外部函数对录入的身份证进行校验

jQuery 代码:
isCardID是个外部函数。
      $("#sfzh").formValidator({onShow:"请输入15或18位的身份证",onFocus:"输入15或18位的身份证",onCorrect:"输入正确"})
      .functionValidator({fun:isCardID});

描述:

直接写匿名函数判断用户名是否含关键字

jQuery 代码:
$("#us").formValidator({onShow:"用户名至少5个字符,最多10个字符"...})
      .inputValidator({min:5,max:10,onError:"你输入的用户名非法,请确认"})
      .functionValidator({fun:function(val){
          if(val == "admin"){return "该用户名包含保留关键字"}
      }});


返回值:jQuerypasswordValidator

概述

对密码强度进行校验

注意事项
      1、如果你用的皮肤没有设置密码强度校验的相关内容，你是不能调用该函数的。
      2、密码强度校验的规则，你可以在皮肤文件中修改。

      支持的控件类型
      password(密码框)

选项

compareID String

(默认: "") 属性名:比较控件ID。 你要比较的控件ID。例如，密码不能于用户名相同，则该参数为用户名的ID，错误提示用参数onErrorCompareSame

onErrorCompareSame String

(默认: "密码于用户名相同不被允许") 属性名:值相同的错误提示。 该参数表示如果密码于compareID控件的值相同的错误提示。本参数要在compareID不为空的情况下才会起作用。如果想去掉该校验规则，本参数设置为空即可

onErrorContinueChar String

(默认: "密码字符为连续字符不被允许") 属性名:连续字符的错误提示。 默认不允许把连续字符当做密码。例如“123456”是非法密码。如果想去掉该校验规则，本参数设置为空即可

onErrorSameChar String

(默认: "密码字符都相同不被允许") 属性名:字符相同的错误提示。 默认不允许把相同字符当做密码。例如“111111”是非法密码。如果想去掉该校验规则，本参数设置为空即可

示例

描述:

密码强度校验。不允许连续字符、不允许字符相同，不允许于用户名相同，对应的错误提示都采用默认值

jQuery 代码:
$("#password1").formValidator({
          pwdTipID:"password1PwdTip", //默认值可以不输入
          onShow:"请输入密码",
          onFocus:"至少1个长度",
          onCorrect:"密码合法"})
      .inputValidator({min:6,max:16,onError:"密码长度错误,请确认"})
      .passwordValidator({
          continueChar:false,
          sameChar:false,
          compareID:"us"
      });


返回值:jQueryajaxValidator

概述

通过ajax到服务器上做数据校验

支持的控件类型
      text(文本框)、file(文件选择器)、password(密码框)、textarea(多行编辑框)、select(选择框)

      排错步骤
      1、检查当前插件类库是否为最新版本
      2、检查jQuery类库是否超过支持的最高版本(1.4.4)
      3、检查URL路径是否正确，在服务端设置断点，看是否能执行到。
      4、要一起提交给服务器的控件的formValidator函数里必须配置ajax:true

      注意事项
      1、在提交的时候，在URL后面自动追加clientID参数，表示触发校验的控件ID
      2、在提交的时候，在URL后面自动追加rand参数，这个是个随机数，所以你不必再传递个当前时间戳
      3、几乎所有的属性跟$.ajax()的属性一样，请参考$.ajax()函数的帮助
      4、你的控件值不能直接串到url参数后面，这样是取不到值得，例如url:"你的网址.ashx?"+$("#控件ID").val()

选项

type String

(默认: "GET") 属性名:请求的类型。 请求方式 ("POST" 或 "GET")， 默认为 "GET"。注意：其它 HTTP 请求方法，如 PUT 和 DELETE 也可以使用，但仅部分浏览器支持。

url String

(默认: 当前页地址) 属性名:发送到的URL地址。 发送请求的地址。在服务器端，你可以通过name为clientid获取触发验证的控件ID名

dataType String

(默认: "html") 属性名:返回的数据类型。 xml、html、script、json、text

timeout Number

(默认: 999) 属性名:超时设置。 超时设置

data Object,String

属性名:数据。

async Boolean

(默认: true) 属性名:是否异步发送。 是否以异步的方式发送

success Function

属性名:成功时的回调函数。 你可以返回的类型有以下几种：
1、false。将显示onError信息到提示层上
2、true。将显示formValidator的onCorrect信息到提示层上
3、字符串。作用同false，返回的字符串将显示在提示层上

processData Object,String

(默认: true) 属性名:是否转换为对象。 在默认的情况下，如果data选项传进的数据是一个对象而不是字符串，将会自动地被处理和转换成一个查询字符串

complete Function

属性名:完成时的调用函数。 ajax请求结束的回调函数

beforeSend Function

属性名:请求前时调用的函数。 ajax校验之前的回调函数，你可以返回true、false、字符串。如果返回字符串，表示校验失败，返回的信息当做错误信息显示出来。

buttons String

属性名:你点提交的按钮(组)jQuery对象。 当你触发了ajax校验，在发送之前，buttons里对应的按钮（组）就会灰掉，一直等待服务器返回数据为止，就重新亮起来

error Function

属性名:失败时的回调函数。 失败时的回调函数

onWait String

(默认: "正在等待服务器返回数据") 属性名:正在校验的提示。 已经发送，但是服务器还未返回数据时候的提示消息。

onError Object,String

(默认: "服务器校验没有通过") 属性名:校验没有通过的提示。 该参数的类型有2种
1、字符串。发生错误时候的提示消息。
2、函数。有两个参数，参数1：当前值 参数2：当前控件对象(dom)

示例

描述:

对用户名进行ajax校验

jQuery 代码:
$("#us").formValidator({onShow:"请输入用户名",onFocus:"用户名至少5个字符,最多10个字符",onCorrect:"该用户名可以注册"}).inputValidator({min:5,max:10,onError:"你输入的用户名非法,请确认"})
              .ajaxValidator({
              dataType : "html",
              async : true,
              url : "http://www.51gh.net/chkuser.aspx?act=ok",
              success : function(data){
                  if( data.indexOf("此用户名可以注册!") > 0 ) return true;
                  return data;
              },
              buttons: $("#button"),
              error: function(jqXHR, textStatus, errorThrown){alert("服务器没有返回数据，可能服务器忙，请重试"+errorThrown);},
              onError : "该用户名不可用，请更换用户名",
              onWait : "正在对用户名进行合法性校验，请稍候..."
          })


返回值:Boolean$.formValidator.pageIsValid

概述

对整组校验组进行校验

注意事项
      1、如果你在initConfig函数里配置了formID，你就不许在调用该函数。插件会自动在form的submit事件里调用当前函数。

选项

validatorGroup Boolean

(默认: "1") 属性名:校验组号。 你要针对哪个组进行验证。如果当前参数被省略，则自动取默认值"1"

示例

描述:

手动调用校验函数

jQuery 代码:
如果initConfig里没有配置formID,你必须自己调用当前函数
      在form的submit事件里调用
      <form id="form1" onsubmit="return $.formValidator.pageIsValid('1')">...</form>


返回值:Object$.formValidator.getLength

概述

返回控件的长度/选择个数/索引号

选项
控件ID String
属性名:表单元素id。
示例
描述:
返回checkbox控件（xingqu:兴趣）选择的个数
   jQuery 代码:
$.formValidator.getLength("xingqu")


返回值:Void$.formValidator.reloadAutoTip

概述

重新定位提示层的位置

应用场景介绍
      1、当你initConfig的属性autoTip配置成true，即自动构建提示层（提示层是绝对定位的）。如果你的控件位置会发生改变，所以你需要调用改函数，进行重新定位
      2、当你的页面刚开始是隐藏的，当切换到改页面的时候，发现提示层都团聚在左上角，需要调用改函数

选项

示例

描述:

在窗口的resize事件里调用

jQuery 代码:
$(document).ready(function(){
          /*你的校验代码*/
          $.formValidator.reloadAutoTip();
      });


返回值:Void$.formValidator.retSetTipState

概述

来把该组的提示内容恢复到页面刚打开的状态

应用场景
      当你的表单做了reset的时候，那你需要调用该函数来重置该校验组对应所有控件提示层的内容。

选项

validatorGroup String

(默认: "1") 属性名:校验组号。 你要针对哪个组重置状态。如果当前参数被省略，则自动取默认值"1"

示例


返回值:VoidunFormValidator

概述

解除控件的验证功能

选项
unbind Boolean
(默认: true)     属性名:是否解除绑定。    你不传递参数的情况下，unbind参数默认true,即解除绑定。
示例
描述:
身份证在2中情况下，其中A条件需要验证，B条件不需要验证
   jQuery 代码:
if(A条件)
      {
          $("#sfzh").attr("disabled",true).unFormValidator(true); //解除校验
      }
      else
      {
          $("#sfzh").attr("disabled",false).unFormValidator(false);//恢复校验
      }


返回值:String$.formValidator.serialize

概述

把指定的内容序列化，中文不会乱码

注意事项
      本函数本质上是调用了jQuery自带的serialize函数，只是进行了decodeURIComponent反解码，再进行escape编码。

选项

objs StringVer4.1.0新增

你传递进来的对象，会用下面jQuery的方法，进行序列化。$(objs).serialize()

示例


jQuery formValidator表单验证插件

常见问题汇总

  1. 如何实现一个控件，根据不同的情况，实现不同的控制？
  2. 一个页面上我有几个tab页，如何实现每个Tab页上的控件单独校验？
  3. 我采用的页面上文字问题的方式，点提交的时候，有校验未通过的，除了文字提示外，还可以再弹出窗口提示吗？
  4. 所有校验通过后，我还要再做别的判断可以吗？我自己的判断没有通过可以中断提交吗？
  5. 我有一组的checkbox（radiobutton）如何设置校验？
  6. 我有2个表单元素，任意一个元素输入东西就算验证通过，如何写代码？比如要求输入中文名字和英文名字任意一个即算校验通过。
  7. 一个表单元素校验通过了，但是我想额外再进行其它的校验，出错要自定义错误，如何写代码？
  8. 如何让赋了初始值的表单元素默认校验通过？
  9. ajaxValidator校验，离开焦点的时候，马上点击提交按钮，这个时候服务器还没有返回怎么办？
  10. 我想在表单没有校验通过的时候，弹出第一个没有校验通过元素的错误信息，如何实现？
  11. 刚打开页面的时候我不想显示onshow的状态，如何实现这种功能?
  12. 在A条件下，某个控件是不检验的，在B条件下，这个控件又是检验的，如何实现？
  13. inputValidator校验方式，我想进行更精确的提示，如何写？也就是比最小值小，比最大值大，分开提示。
  14. 如何实现自动注册pageIsValid函数？每次都要自己写太麻烦了。
  15. 在使用ajaxValidator的时候，服务器端无法获得控件的值，每次都是空，怎么回事？
  16. 自动构建提示层功能开启后，发现定位不准确这么办？
  17. 为什么报$.formValidator无效的脚本错误。
  18. inputValidator除了判断长度外，能不能再对左边空格、右边空格进行判断？
  19. inputValidator验证长度的时候，能把全角字符当做一个长度来验证吗？
  20. 用户输入正确才能离开焦点，如何设置？
  21. 如何设置成调试模式？即验证成功后，不提交数据。
  22. 如果输入值为空的时候，要求提示不能为空，而不是字符长度多少到多少之间之间。
  23. 如果一个控件可以为电话号码，也可以为移动电话号码，如何实现？
  24. 皮肤中文本框的样式名，跟我页面里的样式重名了，如何修改？

1. 如何实现一个控件，根据不同的情况，实现不同的控制？[top]

你只需要在你的不同种情况下，重新设置你的【一行代码】。例如：

if(条件)
$("#id").formValidator({配置1}).inputValidator({配1});
else
$("#id").formValidator({配置2}).inputValidator({配2});

2. 一个页面上我有几个tab页，如何实现每个Tab页上的控件单独校验？[top]

每个Tab页上需要校验的控件，你在写【一行代码】的时候，显式的声明组号。
 $.formValidator.initConfig({validatorgroup:"1"});
$.formValidator.initConfig({validatorgroup:"2"});
再在formValidator里显式的声明组号validatorgroup，例如：
$("#id").formValidator({validatorgroup:"2"...}).inputValidator({...});

3. 我采用的页面上文字问题的方式，点提交的时候，有校验未通过的，除了文字提示外，还可以再弹出窗口提示吗？[top]

这个问题很简单，你只要设置改组的全局配置，
jQuery.formValidator.initConfig({onerror:function(){alert("有部分校验没有通过，请看页面具体提示");}})。

4. 所有校验通过后，我还要再做别的判断可以吗？我自己的判断没有通过可以中断提交吗？[top]

同样很简单，你页只需设置该组的全局配置，
jQuery.formValidator.initConfig({onsuccess:function()
{
if(你的额外判断失败)
return false;
else
return true;
}})

5. 我有一组的checkbox（radiobutton）如何设置校验？[top]

你只需在该组的第一个checkbox上设置校验信息即可，具体请参考demo1里的范例
1、如果你该组的第一个控件的ID ，你可以这么写:
$("sex_1").inputValidator({...})
2、如果你只知道该组的name，你可以这么写:
$("input:check[@name='sex']").inputValidator({...})

6. 我有2个表单元素，任意一个元素输入东西就算验证通过，如何写代码？比如要求输入中文名字和英文名字任意一个即算校验通过。[top]

$("#name_cn,#name_en").formValidator({tipid:"IMTip",onshow:"请填写任一种名字)",onfocus:"请请填写任一种名字。",oncorrect:"输入正确！"}).functionValidator({fun:allEmpty});

function allEmpty(val,elem)
{
return ($("#name_cn").val()=="" && $("#name_cn").val()=="")?'如果想和客户在线洽谈，请至少填写一种IM软件帐号！':true;
}

7. 一个校验组校验通过了，但是我想额外再进行其它校验，出错要自定义错误，如何写代码？[top]

$("#ewjy").formValidator({
onshow:"无论你输入什么，都会提示你额外校验出错，错误信息自定义",
onfocus:"至少输入一个字符",
oncorrect:"你怎么可能输入正确了，难道是bug?",
).inputValidator({min:1,onerror:"这里至少要一个字符,请确认"}).functionValidator({
if(额外校验失败)
return "额外校验失败的错误信息";
else
return true;
});

8. 如何让赋了初始值的表单元素默认校验通过？[top]

$("#xueli").formValidator({onshow:"请选择你的学历",onfocus:"学历必须选择",oncorrect:"谢谢你的配合",defaultvalue:"b"}).inputValidator({onerror: "你是不是忘记选择学历了!"}).DefaultPassed();

9. ajaxValidator校验，离开焦点马上点击提交按钮，这个时候如果服务器还没有返回数据怎么办？[top]

新版本的ajaxValidator提供了一个配置参数buttons（你点提交的按钮(组)jQuery对象），如果你触发了ajax校验，buttons里对应的按钮就会灰掉，一直等待服务器返回数据为止。例如：
$("#test1").formValidator({...}).inputValidator({...}).ajaxValidator({
url : "Default.aspx",
datatype : "json",
success : function(data){...},
buttons: $("#button_id"),
error: function(){alert("服务器没有返回数据，可能服务器忙，请重试");},
onerror : "该用户名不可用，请更换用户名重新",
onwait : "正在对用户名进行合法性校验，请稍候..."
});

10. 我想在表单没有校验通过的时候，弹出第一个没有校验通过元素的错误信息，如何实现？[top]

onerror有2个参数：第一个“第一个没有校验通过元素的错误信息”;第二个“第一个没有校验通过元素对象”；代码如下设置：
jQuery.formValidator.initConfig({onerror:function(msg){alert(msg);}})。

11. 刚打开页面的时候我不想显示onshow的状态，如何实现这种功能？[top]

如果onshow,onfocus,oncorrect,onerror的内容为空，将不显示该提示内容。

12. 在A条件下，某个控件是不检验的，在B条件下，这个控件又是检验的，如何实现？[top]

    if(A条件)
{
$("#sfzh").attr("disabled",true).unFormValidator(true);
        //解除校验
}
else
{
$("#sfzh").attr("disabled",false).unFormValidator(false);//恢复校验
}

13. inputValidator校验方式，我想进行更精确的提示，如何写？[top]

inputValidator校验方式提供了2个属性，分别为onerrormin和onerrormax.
onerrormin:当用户输入的值比min属性小的时候的错误提示
onerrormax:当用户输入的值比max属性大的时候的错误提示
原onerror属性:当onerrormin或onerrormax不存在的时候,用该属性来提示错误

14. 如何实现自动注册pageIsValid函数？每次都要自己写太麻烦了？[top]

自动注册$.formValidator.pageIsValid()函数，为initConfig添加formid属性，表示表单ID号。
如果formid为空，必须按照老的方法自行判断。
适用环境：如果你只有一个校验组，而且利用表单的submit来提交，你可以配置这个formid参数。
例如：$.formValidator.initConfig({formid:"form1",onerror:function(msg){alert(msg)}});

15. 在使用ajaxValidator的时候，服务器端无法获得控件的值，每次都是空，怎么回事？[top]

请看更新记录
2008/1/22 23:58:57 jQuery formValidator 1.1.2 ver
1、为AjaxValidator添加一个addidvalue属性(是否自动添加id和值到url参数后面)
为了修复AjaxValidator在配置信息的时候,取不到运行时候值的bug
插件将自动在url后面自动添加,形式为"id=value"的网页参数
在服务器端,你可以通过Request.querystring["id"]来取值
具体演示请看demo1里的用户名输入和Default.aspx

2008/3/14 12:16:00 jQuery formValidator 2.2 ver
2、AjaxValidator校验方式，将自动再增加一个参数到请求的地址后面"clientid=触发校验的表单ID"。
如果你是一个jQuery集合做校验，如果用到了AjaxValidator校验方式,在服务器端，你无法知道触发校验的是哪个 表单元素，所以在请求的地址后面追加"clientid=触发校验的表单ID"。

你说的问题就是"在配置信息的时候,取不到运行时候值的bug",你可以参考demo1里用户名的写法

16. 自动构建提示层功能开启后，发现定位不准确这么办？[top]

为formValidator函数添加属性：tipcss，用于定位自动提示层。该属性为标准的css属性申明。
例如： tipcss:{"top":"1px","left":"20px"}。请注意属性名和值都必须带引号

开启自动构建提示层的情况下，原tipid属性表示相对定位的目标控件的ID号
关闭自动构建提示层的情况下，原tipid属性的意义不变，表示提示层的ID号

17. 为什么报$.formValidator无效的脚本错误？[top]

  1. 请先检查是否正确引用了插件的脚本
  2. 插件脚本是UTF-8编码的，如果你的页面用其它的编码方式，则在引用脚本的时候要显式指明脚本编码方式
    <script src="formValidator.js" type="text/javascript" charset="UTF-8" ></script>

18. inputValidator除了判断长度外，能不能再对左边空格、右边空格进行判断？[top]

  1. 在新的版本3.1里，为inputValidator设置了empty属性,用于设置控件文本值是否允许两边为空
  2. 看参看demo1里的密码控件。

    $("#password1").formValidator({onshow:"请输入密码",onfocus:"密码不能为空",oncorrect:"密码合法"}).inputValidator({min:1,empty:{leftempty:false,rightempty:false,emptyerror:"密码两边不能有空符号"},onerror:"密码不能为空,请确认"});

19. inputValidator验证长度的时候，能把全角字符当做一个长度来验证吗？[top]

initConfig有个属性:wideword，表示是否把全角字符当做2个长度处理，默认为true。

20. 用户输入正确才能离开焦点，如何设置？[top]

为initConfig增加forcevalid属性;formValidator增加forcevalid属性，表示是否一直输入正确为止才允许离开焦点。 initConfig的forcevalid优先等级最高，即全局配置；而formValidator里的forcevalid是局部设置。
请见demo1邮箱字段的验证。

21. 如何设置成调试模式？即验证成功后，不提交数据。[top]

initConfig里有个属性叫debug，默认false。如果你要调试代码，你可以设置debug为true，校验成功了，也不会提交表单。

22. 如果输入值为空的时候，要求提示不能为空，而不是字符长度多少到多少之间之间。[top]

formValidator函数有个属性：onEmpty。表示可以为空，为空时候的提示。

23. 如果一个控件可以为电话号码，也可以为移动号码，如何实现？[top]

regexValidator，属性：compareType比较数值类型（默认是'||'，"||"或的关系 ? "&&"并列），regExp：正则表达式可以是个字符串，也可以是个字符数组。
范例：
$("#sjdh").formValidator({empty:true,onShow:"请输入你的手机或电话，可以为空哦",onFocus:"格式例如：0577-88888888或11位手机号码",onCorrect:"谢谢你的合作",onEmpty:"你真的不想留手机或电话了吗？"}).regexValidator({regExp:["tel","mobile"],dataType:"enum",onError:"你输入的手机或电话格式不正确"});

24. 皮肤中文本框的样式名，跟我页面里的样式重名了，如何修改？[top]

打开皮肤目录下的对应style.css文件，把重名的样式名改掉，再把theme.js文件里对应的名字改过来。


无标题文档

皮肤制作

对皮肤文件夹的相关解释

1、在于插件(formvalidator.js)同级目录下存放主题文件夹[theme]

2、目录[theme]下是皮肤的文件夹，“文件夹的名字为皮肤名”

3、各皮肤文件夹下放着images、style、js三个文件夹，分别存放皮肤所需的图片、样式、脚本。

4、各皮肤文件夹下放着Author.txt、Preview.jpg两个文件，分别存放作者的联系信息和皮肤效果图

目录结构如下图

对皮肤文件夹里js文件的解释

var onShowHtml = "<div class='$class$'>$data$</div>"; //页面刚打开时提示层的Html代码
var onFocusHtml = "<div class='$class$'>$data$</div>"; //控件获得焦点时提示层的Html代码
var onErrorHtml = "<div class='$class$'>$data$</div>"; //控件校验失败时提示层的Html代码
var onCorrectHtml = "<div class='$class$'>$data$</div>"; //控件校验成功时提示层的Html代码
var onShowClass = "input_show"; //页面刚打开时控件的样式名
var onFocusClass = "input_focus"; //控件获得焦点时的样式名
var onErrorClass = "input_error"; //控件校验失败时的样式名
var onCorrectClass = "input_correct"; //控件校验成功时的样式名

1、变量名不能更改，变量值可以更改。

2、$class$表示对应的样式名。可以省略，可以表示分别是：onShow、onFocus、onError、onCorrect。

3、$data$表示显示的内容。可以省略。

4、样式名变量如果为空，就不设置控件样式(样式只对text、password、file、textarea控件起作用)

如果调用皮肤

1、在initConfig函数里配置属性theme属性，默认值default

范例：$.formvalidator.initConfig({theme:"1"})

2、无需引用css文件和js文件，插件会自动引用。

默认皮肤名“Default”效果图

皮肤名为“ArrowSolidBox”效果图

皮肤名为“SolidBox”效果图


jQuery formValidator表单验证插件

更新记录

2011/7/9 jQuery formValidator 4.1.1 内部测试版本

新增以下功能:

1、增加输入框设置默认值，formValidator函数增加onShowText(字符串，默认值为空)和onShowTextColor(字符串数组，默认值为["#999999","#000000"])两个属性。详见demo8里的“你的描述”控件
默认字体为灰色，获取焦点后录入的文字是黑色的。
范例:
$("#ms").formValidator({onShowFixText:"",onShowText:"这家伙很懒，什么都没有留下。",ajax:true,onShow:"请输入你的描述",onFocus:"描述至少要输入10个汉字或20个字符",onCorrect:"恭喜你,你输对了",defaultValue:"这家伙很懒，什么都没有留下。"}).inputValidator({min:20,onError:"你输入的描述长度不正确,请确认"});

2、为initConfig增加mode属性，统一显示模式设置。去掉tidyMode属性
目前支持固定提示层(FixTip)、自动构建提示层(AutoTip)、单个提示层跟随(SingleTip)、弹出提示内容(AlertTip)4种模式

3、增强固定提示层显示效果，增加一直显示的提示层。
为formValidator函数增加属性onShowFixText(固定提示内容),皮肤目录js中增加变量onMouseOutFixTextHtml(鼠标在控件外时，固定提示内容的html代码)、onMouseInFixTextHtml(鼠标在控件内时，固定提示内容的html代码)：加onShow状态提示内容固定显示的模式。详见demo8
样子类似于：http://reg.email.163.com/mailregAll/reg0.jsp?from=126mail
范例：
$("#email").formValidator({onShowFixText:"6~18个字符，包括字母、数字、下划线，以字母开头，字母或数字结尾",onShow:"请输入邮箱"....});

4、126邮箱注册的样式放在皮肤目录中

5、提供函数deleteValidator，彻底删除注册的校验代码。如果控件彻底删除时

6、ajaxValidator函数和initConfig里的ajaxForm的url参数，默认值改为当前页面。

7、修改initConfig里的属性submitAfterAjaxPrompt->ajaxPrompt

8、ajaxValidator和initConfig里的ajaxForm里的url参数，默认值从""改成当前网址。

修复一部分BUG
1、修复ajaxform中success回调不执行
2、修复提示层重复出现的问题
3、修复select控件会触发change事件两遍的BUG
4、修正控件不存在还进行校验的问题；
5、修正提示层定位不准确的问题。
6、修复皮肤ArrowSolidBox在不同浏览器下显示不一致的问题。

2011/6/5 jQuery formValidator 4.1.0 ver

申明：
1、所有DEMO引用jQuery类库的时候，类库后面直接跟了版本号——表示插件支持的最高类库版本号
2、插件的命名：插件名+版本号，压缩版：插件名+版本号+min
新增以下功能：
1、新增换肤功能，包括提示层的样式、输入控件(目前只支持text、password、file、textarea)的样式。initConfig增加theme属性，表示皮肤名，theme的值可取目录theme下的文件夹名。详见电子版帮助文件里的【制作皮肤】

$.formValidator.initConfig({theme:"ArrowSolidBox"});

2、formvalidator函数增加属性leftTrim和rightTrim。验证之前是否先去掉左边或右边的空格，默认值false
3、ajaxValidator的success事件，可以返回字符串，表示错误信息，将优先显示在提示层上。
4、为initConfig增加属性ajaxForm，用于配置整个表单ajax提交的参数，详见demo7和api帮助
$.formValidator.initConfig({theme:"Default",submitOnce:true,formID:"form1",ajaxForm:{
dataType : "html",
buttons:$("#button"),
url: "http://www.51gh.net/chkuser.aspx?act=ok"
}});
5、所有函数的onError和onSuccess支持字符串，也支持函数(参数为当前的值)返回字符串。
6、发布网页版代码生成器，从当前版本开始支持。
调用步骤：
a、在你要校验的表单页面中引入代码生成器的脚本。
<script src="formValidatorCode-1.0.0.min.js" type="text/javascript"></script>
b、调用函数。如果已经写了校验代码，请在校验代码注册完成后调用。
$.formValidatorTools.openTools();

压缩包相关变更
1、所有的帮助制作成了chm电子帮助文件、范例独立成一个文件夹
2、插件相关的文件放一个目录里

解决以下BUG：
1、修正ajaxValidator 函数有一处条件书写错误的BUG。
2、修正 formvalidator函数autoModify属性对password控件不起作用的BUG。

2011/6/5 jQuery formValidator 4.1.0 ver

申明：
1、所有DEMO引用jQuery类库的时候，类库后面直接跟了版本号——表示插件支持的最高类库版本号
2、插件的命名：插件名+版本号，压缩版：插件名+版本号+min
新增以下功能：
1、新增换肤功能，包括提示层的样式、输入控件(目前只支持text、password、file、textarea)的样式。initConfig增加theme属性，表示皮肤名，theme的值可取目录theme下的文件夹名。详见电子版帮助文件里的【制作皮肤】

$.formValidator.initConfig({theme:"ArrowSolidBox"});

2、formvalidator函数增加属性leftTrim和rightTrim。验证之前是否先去掉左边或右边的空格，默认值false
3、ajaxValidator的success事件，可以返回字符串，表示错误信息，将优先显示在提示层上。
4、为initConfig增加属性ajaxForm，用于配置整个表单ajax提交的参数，详见demo7和api帮助
$.formValidator.initConfig({theme:"Default",submitOnce:true,formID:"form1",ajaxForm:{
dataType : "html",
buttons:$("#button"),
url: "http://www.51gh.net/chkuser.aspx?act=ok"
}});
5、所有函数的onError和onSuccess支持字符串，也支持函数(参数为当前的值)返回字符串。
6、发布网页版代码生成器，从当前版本开始支持。
调用步骤：
a、在你要校验的表单页面中引入代码生成器的脚本。
<script src="formValidatorCode-1.0.0.min.js" type="text/javascript"></script>
b、调用函数。如果已经写了校验代码，请在校验代码注册完成后调用。
$.formValidatorTools.openTools();

压缩包相关变更
1、所有的帮助制作成了chm电子帮助文件、范例独立成一个文件夹
2、插件相关的文件放一个目录里

解决以下BUG：
1、修正ajaxValidator 函数有一处条件书写错误的BUG。
2、修正 formvalidator函数autoModify属性对password控件不起作用的BUG。

2011/6/5 jQuery formValidator 4.1.0 ver

申明：
1、所有DEMO引用jQuery类库的时候，类库后面直接跟了版本号——表示插件支持的最高类库版本号
2、插件的命名：插件名+版本号，压缩版：插件名+版本号+min
新增以下功能：
1、新增换肤功能，包括提示层的样式、输入控件(目前只支持text、password、file、textarea)的样式。initConfig增加theme属性，表示皮肤名，theme的值可取目录theme下的文件夹名。详见电子版帮助文件里的【制作皮肤】

$.formValidator.initConfig({theme:"ArrowSolidBox"});

2、formvalidator函数增加属性leftTrim和rightTrim。验证之前是否先去掉左边或右边的空格，默认值false
3、ajaxValidator的success事件，可以返回字符串，表示错误信息，将优先显示在提示层上。
4、为initConfig增加属性ajaxForm，用于配置整个表单ajax提交的参数，详见demo7和api帮助
$.formValidator.initConfig({theme:"Default",submitOnce:true,formID:"form1",ajaxForm:{
dataType : "html",
buttons:$("#button"),
url: "http://www.51gh.net/chkuser.aspx?act=ok"
}});
5、所有函数的onError和onSuccess支持字符串，也支持函数(参数为当前的值)返回字符串。
6、发布网页版代码生成器，从当前版本开始支持。
调用步骤：
a、在你要校验的表单页面中引入代码生成器的脚本。
<script src="formValidatorCode-1.0.0.min.js" type="text/javascript"></script>
b、调用函数。如果已经写了校验代码，请在校验代码注册完成后调用。
$.formValidatorTools.openTools();

压缩包相关变更
1、所有的帮助制作成了chm电子帮助文件、范例独立成一个文件夹
2、插件相关的文件放一个目录里

解决以下BUG：
1、修正ajaxValidator 函数有一处条件书写错误的BUG。
2、修正 formvalidator函数autoModify属性对password控件不起作用的BUG。

2011/6/5 jQuery formValidator 4.1.0 ver

申明：
1、所有DEMO引用jQuery类库的时候，类库后面直接跟了版本号——表示插件支持的最高类库版本号
2、插件的命名：插件名+版本号，压缩版：插件名+版本号+min
新增以下功能：
1、新增换肤功能，包括提示层的样式、输入控件(目前只支持text、password、file、textarea)的样式。initConfig增加theme属性，表示皮肤名，theme的值可取目录theme下的文件夹名。详见电子版帮助文件里的【制作皮肤】

$.formValidator.initConfig({theme:"ArrowSolidBox"});

2、formvalidator函数增加属性leftTrim和rightTrim。验证之前是否先去掉左边或右边的空格，默认值false
3、ajaxValidator的success事件，可以返回字符串，表示错误信息，将优先显示在提示层上。
4、为initConfig增加属性ajaxForm，用于配置整个表单ajax提交的参数，详见demo7和api帮助
$.formValidator.initConfig({theme:"Default",submitOnce:true,formID:"form1",ajaxForm:{
dataType : "html",
buttons:$("#button"),
url: "http://www.51gh.net/chkuser.aspx?act=ok"
}});
5、所有函数的onError和onSuccess支持字符串，也支持函数(参数为当前的值)返回字符串。
6、发布网页版代码生成器，从当前版本开始支持。
调用步骤：
a、在你要校验的表单页面中引入代码生成器的脚本。
<script src="formValidatorCode-1.0.0.min.js" type="text/javascript"></script>
b、调用函数。如果已经写了校验代码，请在校验代码注册完成后调用。
$.formValidatorTools.openTools();

压缩包相关变更
1、所有的帮助制作成了chm电子帮助文件、范例独立成一个文件夹
2、插件相关的文件放一个目录里

解决以下BUG：
1、修正ajaxValidator 函数有一处条件书写错误的BUG。
2、修正 formvalidator函数autoModify属性对password控件不起作用的BUG。

2011/5/22 jQuery formValidator 4.0.1 ver

规范插件的命名：
1、对插件所有函数相关属性的命名采用Camel风格命名，即：第一个单词首字母小写，其余单词首字母大写。
本次变动比较大，为了规范插件的命名，希望大家谅解。
2、所有DEMO引用jQuery类库的时候，类库后面直接跟了版本号——表示插件支持的最高类库版本号
对ajaxValidator增加以下功能：
1、解决页面回退之后，控件获得焦点，不做任何修改，失去焦点后，强行验证
2、formValidator的ajax参数(是否要提交到服务器)默认值改为false，但是ajaxValidator校验的控件无条件提交服务器
3、在url后面增加随机数。name名字为rand
4、提交之前有数据正在服务器端校验，不允许提交。如果在点击提交按钮之前，有触发ajaxValidator校验的，在提交的时候默认不允许，可以自定义错误提示，在initConfig函数里配置参数（submitAfterAjaxPrompt，默认值“当前有数据正在进行服务器端校验，请稍候”）
5、如果在点击提交之前，如果一个控件一次都没有校验过，而且含有 ajaxValidator校验，会自动触发，而且异步返回成功之后，会再次触发提交

其他修改：
1、修改initConfig里的error事件，errorlist参数的输出顺序，跟控件的校验顺序相同，如果正确，对应位置的值为null
2、initConfig增加参数submitButtonID，表示触发验证的按钮ID，如果配置了formID，则formID 优先
3、reloadAutoTip、resetTipState和pageIsValid函数的参数(validatorGroup)为空，则默认当做"1"处理
4、删除函数triggerValidate
5、intiConfig增加属性inIframe，表示页面是否嵌在iframe里，默认false
6、alertMessage模式下，默认自动修复错误，即autoModify=true
7、增加FAQ里的提问
8、修改用户手册
7、demo1里增加2选1的范例、把错误集中显示的范例；
8、demo2里触提交用submitButtonID属性
解决以下BUG：
1、regexValidator第一次验证通过后，后面输入非法字符也验证通过的问题
2、处理升级之后，demo1里的“全角字符当做1个长度”按钮出错的问题
3、修复retSetTipState重置的时候，全部重置成onshow的问题，有些刚开始默认是通过的
4、解决捆绑ajaxValidator校验的控件，在页面回退之后，控件获得焦点，不做任何修改，失去焦点后，验证错误的问题
5、解决自动构建提示层示例全部团聚在左上角的问题,详见demo6.html内嵌在demo.html里的代码调用

2011/4/30 jQuery formValidator 4.0ver
这次升级要感谢很多在博客里不断留言的网友，特别感谢网友“mark35”在博客上替我回答网友的提问，再次感谢。

1、这次升级精简了代码。

2、提高校验的速度。
 如果控件的name相同，则只校验一次，加快校验速度

3、修复4个状态为空时，没有隐藏提示的问题。

4、修改initConfig配置里的onerror函数，增加一个“错误列表”参数。你可以把所有的错误信息集中显示在某处
 $.formValidator.initConfig({formid:"form1",
onerror:function(msg,obj,errorlist){
//遍历所有的错误消息
$.map(errorlist,function(msg1){alert(msg1)});
},
onsuccess:function(){alert('ddd');return false;}
});

5、针对问题比较多的ajaxValidator函数，进行如下修改
 a、支持同组的所有表单值都传递给服务器端
 必须为每个控件增加name属性，否则是不会传递过去的。
b、去掉addidvalue参数。在服务器端，你可以通过name为clientid获取触发验证的控件ID名
c、为formvalidator增加ajax参数(值为true,false，默认true)，表示ajaxValidator是否把该表单提交给服务器

6、修正automodify参数（如果输入的值非法，则恢复原来的值）不起作用的问题

6、regexValidator支持多个正则表达式与和或的校验，详见用户手册和demo1
a、增加属性：compareType，比较类型，默认值"||"，"||"表示或的关系，"&&"表示并列关系
b、原regexp属性支持接收数组
范例如下：
$("#sjdh").formValidator({empty:true,onshow:"请输入你的手机或者电话号码，可以为空哦",onfocus:"格式例如：0577-88888888或11位手机号码",oncorrect:"谢谢你的合作",onempty:"你真的不想留手机或电话了吗？"}).regexValidator({regexp:["tel","mobile"],datatype:"enum",onerror:"你输入的手机或电话格式不正确"});

7、增加函数$.formvalidator.reloadAutoTip()，来重新定位自动构建的提示层
自动构建提示层所在的网页如果在iframe里，如果刚开始是隐藏的，显示的时候，就会全部团聚在左上角。所以当显示页面的时候，要显式的调用该函数。
官方对offset的解释：
Note: jQuery does not support getting the offset coordinates of hidden elements or accounting for borders, margins, or padding set on the body element.

2009/1/24 13:59:00 jQuery formValidator 3.3ver
在升级的过程中发现了一些bug，在这个版本里做了修正；使用新版的jQuery类库，精简了不少代码。
1、升级的过程中，把inputvalidator函数的里的属性defaultvalue弄错了，导致默认值都失效。
现更正为如下：
最后一个版本属性名为defaultval，现更正为了原来的属性名defaultvalue
checkbox和radio以及select控件都必须用数组进行初始化,请看demo1里的几个控件的默认值。

2、ajaxvalidator是大家问的最多的问题，修正一个bug（感谢网友“じ龍峸√”），并把大家最关心的问题，再做一次阐述。
bug现象：无论校验有没有校验通过，当控件再次得到焦点而再次失去焦点的时候tip里的提示就会停滞在得到焦点的提示
历次升级的相关记录：
a、为AjaxValidator添加一个addidvalue属性(是否自动添加id和值到url参数后面)
为了修复AjaxValidator在配置信息的时候,取不到运行时候值的bug，插件将自动在url后面自动添加,形式为"id=value"的网页参数。在服务器端,你可以通过Request.querystring["id"]来取值。 具体演示请看demo1里的用户名输入和Default.aspx
b、AjaxValidator校验方式，将自动再增加一个参数到请求的地址后面"clientid=触发校验的表单ID"。
如果你是一个jQuery集合做校验，如果用到了AjaxValidator校验方式,在服务器端，你无法知道触发校验的是哪个 表单元素，所以在请求的地址后面追加"clientid=触发校验的表单ID"。

3、上次更新的过程中，压缩包里忘记放入datepicker日期控件，一起更正

2008/12/7 01:44:00 jQuery formValidator 3.2ver

1、为compareValidator里的datatype属性增加新的类型：date、datetime。
那么到目前为止，插件支持4种常类型:"string"、"number"、"date"、"datetime"，默认值为"string"

2、为inputValidator里的属性type增加类型为date、datetime，min和max必须为string类型，会自动转换
"size":表示比较长度 ，默认值
"number":数值型比较
"string":字符型比较
"date":短日期类型
"datetime":长日期类型

3、initConfig增加属性errorfocus，表示发生错误的时候，第一个出错控件是否获得焦点。默认获得焦点。

4、initConfig增加属性forcevalid属性;formValidator增加forcevalid属性，表示是否一直输入正确为止才允许离开焦点。
initConfig的forcevalid优先等级最高，即全局配置；而formValidator里的forcevalid是局部设置。

5、initConfig增加属性wideword,默认为false，表示是否把一个汉字当做一个长度的参数。
请见demo1最上面的按钮演示。

6、增加ajaxValidator对password控件的支持

7、修正升级中出现的一些bug,现都已修复
在升级的过程中，公用一个tip的功能丢失了。
bug描述：只显示第一个控件的信息，后面的控件正确与否都不理睬。
ajaxValidator的一些状态显示bug

2008/7/17 14:12:00 jQuery formValidator 3.1ver

1、为inputValidator增加empty属性。用于设置控件文本值是否允许两边为空。具体请看demo1里的密码的校验代码。
该属性是个对象，默认值{leftempty:true,rightempty:true,emptyerror:null}
leftempty:表示左边是否允许为空
rightempty:表示右边是否允许为空
emptyerror：出现该错误的时候的提示，如果为null，则利用onerror属性来提示错误。
注：只能在type:"size"的时候使用，即比较长度的时候。

2、修改自动构建提示层的语法。为formValidator函数增加relativeid属性。
 relativeid：表示提示层相对定位的控件ID，如果为空，则用当前校验控件的ID。
tipid： 表示自动创建的提示层的ID，如果为空，则用当前校验控件的ID+"Tip"来命名。

3、修正ajaxValidator函数里beforesend属性的bug。代码忘记传递它的唯一参数。

4、修正ajaxValidator函数在后台无法获取中文的bug。

5、更新了升级记录、用户手册、增加了2个提问。

2008/6/21 19:05:00 jQuery formValidator 3.0ver
这次插件做了比较大的功能性升级。首先感谢网友“宇赫”和“axeon”在这次代码升级中给予的建议和支持。针对这次升级，所有的相关文档都已经修改，再次感谢网友“宇赫”在修改文档和测试的时候给予的帮助。

1、修改了插件公共函数和函数属性的命名。你可以用压缩包里update.exe程序自动更改你的校验代码。
所有的函数，首字母小写，其它单词首字母大写（匈牙利命名规范）。
例如:PageIsValid改成pageIsValid
所有的属性全部小写。

2、自动注册$.formValidator.pageIsValid()函数，为initConfig添加formid属性，表示表单ID号。如果formid为空，必须按照以前的方法自行判断，自己注册$.formValidator.pageIsValid()判断。
适用环境：如果你只有一个校验组，而且利用表单的submit来提交，你可以配置这个formid参数。
例如：$.formValidator.initConfig({formid:"form1",onerror:function(msg){alert(msg)}});

3、针对Input和Textarea两大类控件，你可以选择触发校验的事件，默认失去焦点的时候触发校验。因此为inputValidator增加一个属性：triggerevent，默认值："blur"，你可以设置为"change"。

4、自动构建提示层，你可以不用设置提示的DIV了。
为initConfig函数添加属性：autotip，默认false，表示：是否开启自动构建提示层。
例如：$.formValidator.initConfig({formid:"form1",autotip:true,onerror:function(msg){alert(msg)}});

样式的引用，请引用validatorAuto.css，这个样式是专为自动构建提示层用的。
代码：<link type="text/css" rel="stylesheet" href="style/validatorAuto.css" />

为formValidator函数添加属性：tipcss，用于定位自动提示层。该属性为标准的css属性申明。原tipid表示提示层相对位置的控件ID。默认情况下，自动提示层相对tipid，"left":"10px","top":"1px","height":"20px", "width":"250px"。
例如： tipcss:{"top":"1px","left":"60px"}。请注意属性名和值都必须带引号
请特别关注一下demo1里性别的校验代码，这里需要调整一下x的坐标，代码如下：
$("input:radio[name='sex']").formValidator({tipid:"sex1",tipcss:{"left":"60px"},onshow:"请选择你的性别",onfocus:"没有第三种性别了，你选一个吧",oncorrect:"输入正确",defaultvalue:"2"}).inputValidator({min:1,max:1,onerror:"性别忘记选了,请确认"}).defaultPassed();

开启自动构建提示层的情况下，原tipid属性表示相对定位的目标控件的ID号
关闭自动构建提示层的情况下，原tipid属性的意义不变，表示提示层的ID号

5、修改扩展库里的正则表达式和函数。
修正国内电话的正则表达式。感谢网友"Hurray"提供的表达式。
修正IP4的正则表达式。感谢网友"六六"提供的表达式。
修正身份证校验函数，支持新的带x身份证 。感谢网友"宇赫"提供。

2008/5/21 18:42:00 jQuery formValidator 2.9.3 ver
1、增加对select-multiple的验证的支持，到现在为止插件已经支持所有控件的验证
用InputValidator来校验这种类型,对select-multiple而言InputValidator里的参数min和max表示选择的个数
示例代码：具体请见demo1里新增加的示例
$("#selectmore").formValidator({onshow:"按住CTRL可以多选",onfocus:"按住CTRL可以多选,至少选择2个",oncorrect:"谢谢你的合作"}).InputValidator({min:2,onerror:"至少选择2个"});

2、增加对checkbox设置多个默认值的支持。具体请见demo1里的选择兴趣爱好2里的代码
$("input:checkbox[@name='checkbox8']").formValidator({tipid:"test2Tip",onshow:"请选择你的兴趣爱好(至少选择2个,最多选择3个)",onfocus:"你至少选择2个,最多选择3个",oncorrect:"恭喜你,你选对了",defaultvalue:["7","8"]}).InputValidator({min:2,max:3,onerror:"你选的个数不对(至少选择2个,最多选择3个)"});
注意此时的defaultvalue必须是个Array

2008/4/27 18:42:00 jQuery formValidator 2.9.1 ver
1、InputValidator增加2个属性onerrormin和onerrormax,请见demo1里的[你的年龄]校验代码
onerrormin:当用户输入的值比min属性小的时候的错误提示
onerrormax:当用户输入的值比max属性大的时候的错误提示
原onerror属性:当onerrormin或onerrormax不存在的时候,用该属性来提示错误

2008/4/13 01:20:00 jQuery formValidator 2.9 ver
1、修正API帮助里的错误。
2、提供$.fn.unformValidator(true/false)来解除/恢复校验功能。true表示，解除校验功能，并会去掉提示。具体请看demo1里的身份证校验和该页面最上面的按钮。示例代码如下：
$("#sfzh").attr("disabled",true).unformValidator(true);
3、提供$.formValidator.RetSetTipState(校验组号)来把提示内容恢复到onshow状态。
4、更改控件的校验顺序，提高校验的速度。现在依赖于你注册的顺序，请见demo1里的校验顺序。
你可以放置100来个控件在页面上，用2.9版本和2.4版本对比一下校验速度
5、优化了formValidator校验方式的算法。针对radio和checkbox现在只支持用name来注册校验
例如性别选择，有ID为"nan","nv"，name为"sex"，你目前只能这么写:
$("input:radio[name='sex']").formValidator({...})
6、废除formValidator里的onfocusevent和onblurevent。请自行利用JQ的事件功能。
7、修改、增加了扩展库里的内容。增加的内容如下：
提供函数:isTime isDate isDateTime
调用的方法:$("#input_id").formValidator({...}).FunctionValidator({fun:isDateTime}); FunctionValidator的调用，请看帮助文档

提供正则:修改了9个正则表达式，增加了2个正则表达式
调用的方法: $("#input_id").formValidator({...}).RegexValidator({regexp:"num1",datatype:"enum",onerror="..."});
8、修改了压缩包里FAQ.html，增加、修改了提问和回答。
如果你在调用插件的时候碰到什么问题，可能FAQ里也有类似的问题，请参考回答来解决问题。
9、废除formValidator里的empty属性。用InputValidator({min:0})来实现可以为空的情况——某种意义上说，empty和InputValidator({min:0})是功能重复了。
10、更改了$.fn.DefaultPassed函数,设置函数参数.
没有参数/false：显示onSucess状态
true:显示onShow状态
11、为了方便调试,为initConfig增加参数debug，表示是否处于调试状态，默认false,不会提交表单

2008/3/23 14:50:00 jQuery formValidator 2.4 ver
代码改动最少，但能尽量的满足大家业务需求——这个是我完善插件的目标
1、修正帮助里的错误。InputValidator校验方式里的参数type的详细解释更正为:(对select无效)"size":表示比较长度 "number":数值型比较;"string":"字符型比较"。
2、AjaxValidator校验方式，将自动再增加一个参数到请求的地址后面"clientid=触发校验的表单ID"。
如果你是一个jQuery集合做校验，如果用到了AjaxValidator校验方式,在服务器端，你无法知道触发校验的是哪个表单元素，所以在请求的地址后面追加"clientid=触发校验的表单ID"。
3、如果onshow,onfocus,oncorrect,onerror的内容为空，将不显示该提示内容。
4、废弃formValidator里的onvalid参数，用FunctionValidator校验方式来取代。例如:

$("#ewjy").formValidator({...,onvalid:function(elem,val){
if(val=="猫冬"){
return true;
}else{
return "额外校验失败,想额外校验通过，请输入\"猫冬\""
}})

可以这么取代
$("#ewjy").formValidator({...}).FunctionValidator(fun:function(val,elem){
if(val=="猫冬"){
return true;
}else{
return "额外校验失败,想额外校验通过，请输入\"猫冬\""
}
})

2008/3/14 12:16:00 jQuery formValidator 2.2 ver
帮助里一直有个错误，到今天才发现，表示抱歉。
1、修正帮助里的错误。InputValidator校验方式里的参数type的详细解释更正为:(对select无效)"size":表示比较长度 "number":数值型比较;"string":"字符型比较"。
2、AjaxValidator校验方式，将自动再增加一个参数到请求的地址后面"clientid=触发校验的表单ID"。
如果你是一个jQuery集合做校验，如果用到了AjaxValidator校验方式,在服务器端，你无法知道触发校验的是哪个表单元素，所以在请求的地址后面追加"clientid=触发校验的表单ID"。
3、如果onshow,onfocus,oncorrect,onerror的内容为空，将不显示该提示内容。
4、废弃formValidator里的onvalid参数，用FunctionValidator校验方式来取代。例如:

$("#ewjy").formValidator({...,onvalid:function(elem,val){
if(val=="猫冬"){
return true;
}else{
return "额外校验失败,想额外校验通过，请输入\"猫冬\""
}})

可以这么取代
$("#ewjy").formValidator({...}).FunctionValidator(fun:function(val,elem){
if(val=="猫冬"){
return true;
}else{
return "额外校验失败,想额外校验通过，请输入\"猫冬\""
}
})

2008/3/9 13:01:00 jQuery formValidator 2.1 ver
第一个压缩版已经放在压缩包里：formValidator_min.js；修改了GetLenght的代码；更新了demo1；更新了帮助。
1、第一个压缩版，包括版权申明在内，只有8.66k。
2、修改了getLenght函数。
GetLength function("表单元素id") 判断表单元素的选择长度（个数）
checkbox或radiobutton表示(同组)选择的个数。
对select-one，InputValidator里的参数min和max表示选择的索引号范围
对select-more，InputValidator里的参数min和max表示选择的个数
其它input表示的表示字符长度。

2008/3/1 0:53:00 jQuery formValidator 2.0 ver
这次又做了一次比较大的调整：增加了FunctionValidator这种校验方式，现在你可以调用外部函数了；调整了内部部分算法；更新了demo1。
1、增加FunctionValidator校验方式。作用：你可以用外部函数对表单元素进行校验和处理，返回true/false表示校验是否成功;返回字符串表示自定义错误信息，校验失败;如果没有返回值表示处理过程，校验成功。范例代码如下：
$("#sfzh").formValidator({onshow:"请输入15或18位的身份证",onfocus:"输入15或18位的身份证",oncorrect:"输入正确"}).FunctionValidator({fun:isCardID});
fun这个参数给你的函数传递了2个参数(该表单元素的值,表单元素element) 。具体情况，请看API帮助文档
2、当你调用PageIsValid的时候，如果未校验通过，则给onError传递2个参数(第一个校验没通过元素的错误信息,第一个校验没通过元素element)。范例代码如下：
$.formValidator.initConfig({onError:function(msg){alert(msg)}});
3、AjaxValidator校验方式增加一个配置参数buttons（你点提交的按钮(组)jQuery对象）。作用：当你触发了ajax校验，buttons里对应的按钮（组）就会灰掉，一直等待服务器返回数据为止。范例代码如下：
$("#test1").formValidator({...}).InputValidator({...}).AjaxValidator({
url : "Default.aspx",
datatype : "json",
success : function(data){...},
buttons: $("#button_id"),
error: function(){alert("服务器没有返回数据，可能服务器忙，请重试");},
onerror : "该用户名不可用，请更换用户名重新",
onwait : "正在对用户名进行合法性校验，请稍候..."
});
4、由于增加了自定义错误信息的功能，为了跟FunctionValidator校验方式里"fun"函数返回意义统一，更改了formValidator里的onvalid参数返回的意义，给大家带来不便请谅解。返回true/false表示校验是否成功；返回字符串表示自定义错误信息，校验失败；如果没有返回值表示处理过程，校验成功。

2008/2/24 0:53:00 jQuery formValidator 1.3 ver
由于工作忙，网友提了很多珍贵的意见，到现在才更新插件，真的对不住！这次修改了几处不合理的地方。
特别增加了DefaultPassed函数，并且调整了表单元素校验的顺序。
1、增加DefaultPassed函数，作用：如果你的表单元素有默认值，而且是合法的，你可以通过这个，设置默认校验通过，示例代码如下：
$("#sex").formValidator({onshow:"请选择你的性别",onfocus:"没有第三种性别了，你选一个吧",oncorrect:"输入正确",defaultvalue:"1"}).InputValidator({min:1,max:1,onerror:"性别忘记选了,请确认"}).DefaultPassed();
2、修正了showalert模式下，只有值发生改变的时候才触发校验
3、修改了表单提交的时候，表单元素校验的顺序，现在按照表单元素的流顺序进行校验
4、demo1里集成了datatimemask插件，具体应用，请见“出生日期”的代码
5、避免了插件与别的javascript类库的$符号的冲突
6、修改了api帮助文档

2008/2/3 22:30:44 jQuery formValidator 1.2.1 ver
1、修复表单元素额外校验失败还会提交得bug,即formValidator里的onvalid属性

2008/1/25 23:30:56 jQuery formValidator 1.2.0 ver
这个版本，内部函数做了比较大的调整，开放了更多的函数提供给大家使用，使插件灵活性更大
特别申明：请保留插件的版权申明，谢谢
1、修改插件文件名为:formValidator.js ； 对应的正则表达式的库也被命名为formValidatorRegex.js。
2、SelectValidator被合并到InputValidtor中去，请大家赶紧修改，语法兼容，只要替换名称即可。
3、因为InputValidtor合并了SelectValidator，所以API帮助里列举了InputValidtor各属性能起作用的各种表单类型
4、开放3个公共函数，这些函数跟你的配置相关：
SetFailState | function("tipid","显示的信息") | 在showword模式下，如果你的额外校验没有通过，你可以通过它来设置成失败信息和状态。
IsOneValid | function("表单元素id") | 主要来判断单个表单元素是否验证通过。
GetLength | function("表单元素id") | 判断表单元素的选择长度（个数）
 |  | checkbox或radiobutton表示(同组)选择的个数。 select表示选择的selectedIndex值。 其它的表示字符长度。
5、formValidator里的onvalid属性，增加了返回值，即插件校验成功后，你还可以额外校验。例子请参见demo1里的【额外校验】
return true表示这个表单元素校验成功
return false表示这个表单元素校验失败
错误信息，你可以通过SetFailState函数要写
6、修复在firefox下，长度验证出错的bug。发现jQuery1.2不支持这么写：$("#textarea").attr("type")

2008/1/22 23:58:57 jQuery formValidator 1.1.2 ver
1、为AjaxValidator添加一个addidvalue属性(是否自动添加id和值到url参数后面)
为了修复AjaxValidator在配置信息的时候,取不到运行时候值的bug
插件将自动在url后面自动添加,形式为"id=value"的网页参数
在服务器端,你可以通过Request.querystring["id"]来取值
具体演示请看demo1里的用户名输入和Default.aspx

2008/1/22 18:35:38 jsvalidation 1.1.1 ver
1、紧急修复AjaxValidator校验状态出错,以及显示状态的bug
2、调整了内部OneIsValid和formValidator函数的算法,使判断更加合理、有效

2008/1/22 9:23:44 jQuery formValidator 1.1.0 ver
1、开放AjaxValidator表单验证,主要对$.ajax()的调用,具体演示请看demo1里的用户名输入和Default.aspx
用户名在服务器端的校验，我是用了随机数取模，但是每次运行返回要么都是偶数要么都是奇数（不知道什么问题）。
先是长度校验，再是格式校验，最后才是服务器端校验
2、修正AjaxValidator校验状态出错,以及显示状态的问题bug。
3、修正对AjaxValidator的api帮助。
4、修正内部几个函数的一些bug。
5、未了适应AjaxValidator，调整formValidator初始化的一部分功能。

2008/1/17 20:25:29 jQuery formValidator 1.0.3 ver
1、把InputValidator的属性defaultvalue移到formValidator下。
目前defaultvalue属性只支持input和select两种tag
2、增加demo1里的范例内容，增加了性别的选择和默认值的设置（性别、学历、爱国、国家区号、你的描述）。
3、增加RegexValidator的一个属性：datatype，支持外置正则表达式的枚举类型，具体请见demo3.html
你可以额外包含这个js文件，定义一个数据类型,你可以自由的修改里面的名称和对应的值
var regexEnum =
{
intege:"^([+-]?)\\d+$" //整数
}
如何调用范例：$("#zs").formValidator({onshow:"请输入整数",oncorrect:"谢谢你的合作，你的整数正确"}).RegexValidator({regexp:"intege",datatype:"enum",onerror:"整数格式不正确"});
4、修正自动纠错的一个bug
5、修正了api帮助文档

2008/1/15 0:50:40 jQuery formValidator 1.0.2 ver
1、为formValidator增加tipid属性。
主要为了解决多个表单元素共用一个TIP的问题，提示错误的原则:后面的成功或失败信息都不覆盖前面的失败信息。针对这个属性，已经更新了demo1和源码，具体请看范例
2、修正了部分bug和api说明文档疏漏的地方

2008/1/11 20:35:08 jQuery formValidator 1.0.1 ver
1、修改formValidator下的属性onvalid
增加2个参数，参数1：对象本身 参数2：值。主要是校验通过后，你还希望执行一些操作，你可以方便的取到对象和值
2、去掉InputValidator、SelectValidator、CompareValidator、RegexValidator、AjaxValidator下的onvalid属性
写文档的时候太过匆忙，所以属性加多了，帮助文档和源码都已经修正
3、为formValidator增加属性:automodify,默认值：false。
这个属性只要针对，如果你输入的是非法的，离开焦点的时候将自动恢复上次的值,并且先都有提示,showword模式的提示变成onshow状态
4、为formValidator增加onfocusevent和onblurevent
因为jQuery的事件注册是覆盖的，不是attachEvent追加的，所以再托管出这两个被插件霸占住的事件onfocus和onblur
onfocusevent:获得焦点的时候，处理系统自动处理的代码后，继续你希望再执行的代码
onblurevent:失去焦点的时候，处理系统自动处理的代码后，继续你希望再执行的代码
5、提交验证过程中，如果没有验证通过，则第一个出错的获得焦点
6、申明一点：RegexValidator采用的是显式构造函数new RegExp("pattern"[,"flags"]); 由于Javascript 中'\' 被用作转义字符，所以在使用显示构造函数构造实例对象的时候，需要使用'\\' 代替'\'


jQuery formValidator表单验证插件

相关下载

最新版本：4.1.0，更新日期：2011/06/26[下载]
请实时关注插件的更新，请访问插件首页

其他相关作品

jQuery formValidator表单校验代码生成器 网页版ver1.0

摘要: jQuery formValidator表单校验插件，你只需要写一行代码就可以轻松实现20多种脚本控制，实现了js脚本于页面的分离。
jQuery formValidator表单校验代码生成器是针对jQuery formValidator表单校验插件ver2.4版本来写的。书写这个生成器的目的：
1、减少书写错误。主要是配置参数容易书写错误，JS是认大小写。
2、提高代码复用性。
3、让不懂JS的人更容易上手。
4、不用记忆配置参数。

调用步骤：
a、在你要校验的表单页面中引入代码生成器的脚本。
<script src="formValidatorCode-1.0.0.min.js" type="text/javascript"></script>
b、调用函数。如果已经写了校验代码，请在校验代码注册完成后调用。
$.formValidatorTools.openTools();

最新版本：1.0，插件支持版本4.1.0起，更新日期：2011/06/26 [下载] [演示 ]

jQuery formValidator表单校验代码生成器ver1.1

摘要: jQuery formValidator表单校验插件，你只需要写一行代码就可以轻松实现20多种脚本控制，实现了js脚本于页面的分离。
jQuery formValidator表单校验代码生成器是针对jQuery formValidator表单校验插件ver2.4版本来写的。书写这个生成器的目的：
1、减少书写错误。主要是配置参数容易书写错误，JS是认大小写。
2、提高代码复用性。
3、让不懂JS的人更容易上手。
4、不用记忆配置参数。

最新版本：1.1，更新日期：2008/04/06 [下载] 插件更新网址，请点击这里

jQuery DateTimeMask日期掩码插件

摘要: jQuery DateTimeMask日期掩码插件，它是基于jQuery类库，实现了js脚本于页面的分离。
你只要写一句话:$("#input_id").DateTimeMask()，就能完美的实现5种日期掩码的输入控制,目前在ie6.0和firefox3.0下调试通过。该插件提供了回调函数，你可以利用它轻松的封装成服务器端控件，你可以把插件的属性变成服务器端属性。支持的掩码格式有:1:yyyy-MM-dd HH:mm:ss 2:yyyy-MM-dd HH:mm 3:yyyy-MM-dd 4:HH:mm 5:HH:mm:ss

最新版本：1.0，更新日期：2008/02/10 [下载] 插件更新网址，请点击这里

jQuery inputMask字母数字下划线掩码插件

摘要: jQuery inputMask掩码插件，它是基于jQuery类库，实现了js脚本于页面的分离，是一个很简单的掩码控制插件（简单的不敢拿出来），实现对字母、数字、下划线三种类型的输入控制，你可以任意组合。这个插件的应用场合，主要是：1、用户名的输入；2、配合autoComplete做输入控制（你可能根据拼音或者五笔来查找数据）；3、一些常规的数据输入。目前该插件在ie6.0和firefox3.0下调试通过。

最新版本：1.0，更新日期：2008/02/27 [下载] 插件更新网址，请点击这里

使用过程中有任何问题，请告诉我们，QQ： 如果有什么技术问题，请点这里 邮箱：wzmaodong@126.com。


捐助开发者

如果您觉的本插件为您和您的公司B/S程序开发带来了方便，你可以赞助作者。

建设银行：4340 6114 2067 1138

姓 名：孙桢


返回值:jQuerydefaultPassed

概述

默认校验通过，显示onCorrect状态

调用场合
      1、有默认值，而且这个值是合法的情况下，可以调用。例如性别，你默认男，是合法的。
      2、当你编辑已经存在的记录时，很多默认值都是合法的，可以调用。

选项

示例

描述:

表单中选择性别，默认值为男，这个时候显示通过。

jQuery 代码:
$(":radio[name='xb_one']").formValidator({
          onShow:"请选择你的性别",
          onFocus:"没有第三种性别了，你选一个吧",
          onCorrect:"输入正确",
          defaultValue:["1"]})
      .inputValidator({
          min:1,
          max:1,
          onError:"性别忘记选了,请确认"
      }).defaultPassed();